def read_file_content(file):
    with open(file) as f:
        content = f.readlines()
    # remove whitespaces
    return [_.strip() for _ in content]


# old (list)
def parse_book_string(book_string):
    book = {}
    book['title'] = book_string.split('[')[1].split(']')[0]
    book['url'] = book_string.split(']')[1].split('(')[1].split(')')[0]
    book['author'] = book_string.split(' by ')[-1]
    book['rating'] = ''
    book['year'] = ''
    return book


# new (table)
def parse_book_string_new(book_string):
    book = {}
    book_split = book_string.split('|')
    # print(book_split)
    book['title'] = book_split[1].strip()
    book['author'] = book_split[2].strip()
    book['url'] = book_split[3].strip().split('[')[1].split('(')[1].split(')')[0]
    book['rating'] = book_split[3].strip().split('[')[1].split(']')[0]
    book['year'] = book_split[4].strip()
    return book


def load(file, file_type):
    file = read_file_content(file)

    # we start one line after tilte # Books
    line_to_start = file.index('# Books') + 1
    current_title = ''
    books_under_current_title = []
    library = {}

    for i in range(line_to_start, len(file)):
        line = file[i]

        # we have a title
        if line.startswith('##'):
            if len(current_title) == 0:
                current_title = line
            else:
                library[current_title] = books_under_current_title
                books_under_current_title = []
                current_title = line
            continue

        # we have a book
        if file_type == 'old':
            if line.startswith('*'):
                book = parse_book_string(line)
                books_under_current_title.append(book)
        else:
            if line.startswith('|') and not line.startswith('| Name') and not line.startswith('|---'):
                book = parse_book_string_new(line)
                books_under_current_title.append(book)

    return library
